iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
AI & Data

機器學習不難嘛系列 第 24

Day24-MNIST模型預測

  • 分享至 

  • xImage
  •  

上次我們已經建立好輸入輸出層和隱藏層,把模型分為20%的訓練集和80%的測試集,並且利用20%的訓練集進行十次訓練了,我們今天要利用這十次的訓練結果來預測另外80%的測試集,有一點需要注意的是,如果你之後要進行其他的模型預測的話,你的訓練集跟測試集不能有交集,不然會干擾電腦的判斷結果。

回歸正題,要怎麼確認預測的結果是否正確呢? 我們要利用到之前一篇提到的顯示結果和模型自帶的標籤(label),如果兩者出來的值相同則代表我們的預測是正確的,不相同則表示錯誤。

程式講解:

def show_images_labels_predictions(images,labels,
                                   predictions,start_id,num=10):
  plt.gcf().set_size_inches(12, 14)
  if num>25: num=25
  for i in range (0, num):
    ax=plt.subplot(5,5, 1+i)
    ax.imshow(images[start_id], cmap='binary')

    if( len(predictions) > 0 ):
      title = 'ai = ' + str(predictions[start_id])
      title += ('(o)' if  predictions[start_id]==
      labels[start_id] else ' (x)')
      title += '\nlabel = ' + str(labels[start_id])
    else :
      title = 'label = ' + str(labels[start_id])

    ax.set_title(title,fontsize=12)
    ax.set_xticks([]);ax.set_yticks([])
    start_id+=1
  plt.show()

上面這段程式碼跟之前的顯示結果有什麼不同呢? 很明顯可以看到多了一段判斷式,我們就是要用它來判斷預測結果是否正確,if判斷式的條件是如果有預測值才會顯示正確或錯誤,沒有預測值則直接印出標籤,若是有預測值的話再判斷預測值是否等於標籤的值,等於的話在預測值和標籤的位置中間印出o,不同則印出x,如下圖顯示。

https://ithelp.ithome.com.tw/upload/images/20231009/20162311Zp2zFaMrXS.png


上一篇
Day23-MNIST模型訓練
下一篇
Day25-MNIST準確率和混淆矩陣
系列文
機器學習不難嘛30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言